import { request } from 'umi';

export default {
  /**
   * 查询某项目下所有的页面
   * @param project 项目名称
   * @returns Promise
   */
  getPages(project: string) {
    return request(`/api/project/${project}/pages`);
  },
  /**
   * 查询某个页面具体配置信息
   * @param params.project 项目名称
   * @param params.page 页面名称
   * @returns Promise
   */
  getPageConfigs(params: { project: string; page: string }) {
    return request('/api/project/getPageConfig', {
      body: JSON.stringify(params),
      method: 'POST',
    });
  },
  /**
   * 查询某个页面的业务代码
   * @param params.project 项目名称
   * @param params.page 页面名称
   * @returns 
   */
  getPageCode(params: { project: string; page: string }) {
    return request('/api/project/getPageCode', {
      body: JSON.stringify(params),
      method: 'POST'
    });
  },
  /**
   * 查询组件面板里的所有组件
   * @returns Promise<json>
   */
  getComponentsList() {
    return request('/api/jsons/components.json');
  },
  /**
   * 同步页面配置信息
   * @param config.pageConfig 页面配置信息
   * @param config.project 项目名称
   * @param config.page 页面名称
   * 
   */
  asyncPageConfig(config: {
    pageConfig: any;
    project: string;
    page: string;
  }) {
    return request('/api/project/asyncConfig', {
      method: 'POST',
      data: JSON.stringify(config)
    })
  },
  /**
   * 
   * @param {Object} config 页面配置
   * @param {string} config.code 页面代码
   * @param {string} config.project 当前项目名称
   * @param {string} config.page 当前在编辑的页面名称  
   * @returns {Promise<API.IResponse<any>>}
   */
  asyncPageCode (config: {
    code: string;
    project: string;
    page: string;
  }) {
    return request('/api/project/asyncCode', {
      method: 'POST',
      data: JSON.stringify(config)
    });
  }
};
